package cz.muni.fi.pa165.mushroom.website.services;



import cz.muni.fi.pa165.mushroom.website.dto.ForestDto;
import cz.muni.fi.pa165.mushroom.website.dto.GathererDto;
import cz.muni.fi.pa165.mushroom.website.dto.VisitDto;

import java.util.List;

/**
 * @author: Roman Jakubco
 */
public interface VisitService {
    /**
     * Adding Visit object into database.
     *
     * @param visitDto Object VisitDto to be stored in database
     */
    public void createVisit(VisitDto visitDto);

    /**
     * Updating Visit object in database.
     *
     * @param visitDto Object VisitDto to be updated in database
     */
    public void updateVisit(VisitDto visitDto);

    /**
     * Deleting Visit from database.
     *
     * @param visitDto Object VisitDto to be deleted.
     */
    public void deleteVisit(VisitDto visitDto);

    /**
     * Finding specific Visit in database.
     *
     * @param id id of Visit to be found
     * @return visit DTO if found else null
     */
    public VisitDto findVisit(Long id);

    /**
     * List all visits in database.
     *
     * @return List of visits DTOs from database
     */
    public List<VisitDto> listVisits();
    
    /**
     * List visits of specific forest.
     * 
     * @param forestId- id of forest
     * @return List of visitDtos in specific forest from database
     */
    public List<VisitDto> listVisitsByForest(ForestDto forest);
    
    /**
     * List visits of specific gatherer.
     * 
     * @param gatherId id of Gatherer
     * @return List of visitDtos by specific Gatherer from database
     */
    public List<VisitDto> listVisitsByGatherer(GathererDto gatherer);
    
}
